MIME-Version: 1.0
Server: CERN/3.0
Date: Monday, 16-Dec-96 23:10:32 GMT
Content-Type: text/html
Content-Length: 1423
Last-Modified: Thursday, 18-Apr-96 15:56:34 GMT

<TITLE> Topics for prelim 2 </TITLE>

<PRE>
Topics on prelim 2:

I. Object-oriented programming
	+ Base classes and derived classes
	+ Inheritence
		- Functions
		- Instance variables
	+ Protected keyword
	+ Constructors for derived classes
	+ Virtual functions
	+ Pure virtual functions

II. Program correctness
	+ Induction
	+ Assertions
	+ Truth vs. validity
	+ Hoare triples
	+ Preconditions and postconditions
	+ The assignment rule
	+ Loops
		- Loop invariants
		- Bound functions
		- 5 steps to proving a loop correct
		- Developing a loop using an invariant
			* You need to understand, but not memorize,
			  the lists of step for these last two

III. Gofer
	+ Types
		- Int, Char, Bool, Float 
		- Tuples
		- Lists
		- Functions
	+ Function definitions
		- Basic pattern matching (integers)
		- Pattern matching with lists and tuples
	+ Where clauses
	+ Polymorphic types (a, [a], etc.)
		- e.g. what is the type of map?
	+ Currying and partial application
	+ The Curry-Howard isomorphism
		- Just kidding!
		- Did you know that Currying was actually
		  invented by Schonfinkel?
		- So it should be called Schonfinkelization.
	+ Higher-order functions
		- Map
		- Filter
	+ Anonymous functions
	+ Lazy evaluation and infinite lists
		- Just the basic concept, nothing tricky
	+ Efficiency considerations
		- e.g. fib recursively vs. tail recursively

You do *not* need to know about list comprehensions.

</PRE>
